package com.xiaoshuidi.cloud.module.report.controller.finance.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xiaoshuidi.cloud.framework.common.util.date.DateUtils;
import com.xiaoshuidi.cloud.module.contract.enums.contract.CustomerTypeEnum;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

import static com.xiaoshuidi.cloud.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;

/**
 * 租赁押金导出
 */
@Data
public class ContractRoomDepositExportRespVO implements Serializable {


    /**
     * 合同编号
     */
    @ExcelProperty(value = "合同编号")
    private String contractNo;

    /**
     * 交易时间
     */
    @ExcelProperty(value = "日期")
    @DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    @JsonFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
    private LocalDateTime actualPayTime;

    /**
     * 租客名
     */
    @ExcelProperty(value = "承租人")
    private String customerName;

    /**
     * 交易对象名称
     */
    @ExcelProperty(value = "交易对象名称")
    private String payer;

    /**
     * 租客类型
     * {@link CustomerTypeEnum}
     */
    @ExcelProperty(value = "人员类型")
    private String customerType;

    /**
     * 房源信息
     */
    @ExcelProperty(value = "房源信息")
    private String roomName;

    /**
     * 支付方式
     */
    @ExcelProperty(value = "支付方式")
    private String payMethod;

    /**
     * 合同类型
     */
    @ExcelProperty(value = "合同类型")
    private String contractType;

    /**
     * 合同周期
     */
    @ExcelProperty(value = "合同周期")
    private String contractCycle;

    /**
     * 已收押金金额
     */
    @ExcelProperty(value = "已收押金金额")
    private BigDecimal deposit;

    /**
     * 已退押金金额
     */
    @ExcelProperty(value = "已退押金金额")
    private BigDecimal returnAmount;

    /**
     * 剩余押金金额
     */
    @ExcelProperty(value = "剩余押金金额")
    private BigDecimal remainAmount;

}
